約 2,891,231 件
https://w.atwiki.jp/bonsaicraft/pages/231.html
盆鯖に入っているbukkit(spigot)プラグイン プラグイン名 概要 dynmap WEBブラウザマップ iConomy 経済 iConomyChestShop? チェストショップ LWC チェストロック XWarp ワープ WorldBorder ワールド境界 etc... 盆鯖に入っている独自プラグイン プラグイン名 概要 魔法の木のくわ アイテムを直接インベントリに入れます 宅配プラグイン アイテムやメッセージを別プレイヤーに届けます オークションプラグイン オークションができるようになります BCWプラグイン PvP用のプラグインです 広告プラグイン 定期的に鯖内にいる住民に向けて広告を送れます xBonk 経験値を管理します Kaburu いろいろなものを被れるようになります BonFly. お金を支払うことで飛べるようになります※ブロックの設置及び破壊はできません Datsumou 色付き堅焼き粘土,色付きガラス,色付き窓ガラスの色を落とすことができます ArmorStandEditor アーマースタンドをいじれます 導入すると便利なmod modは無くても盆鯖でのプレイには支障はありません。 modについては各自で調べてください。(大抵はJapan Minecraft wikiに情報があります。) mod名 概要 optifine マインクラフトの表示を詳細に設定できます設定により軽量化もできますし、高精細化(美化するが重量化する)もできます影MODを使う場合も必要です他にも、MCPatcherを用いたリソースパックを使うためや、Entityのモデルチェンジ機能も備えています MInecraft forge ほとんど全てのmodが前提とするAPImodですoptifine以外のmodを使う場合はまずこれから liteloader 一部のmodが前提とするAPImodですクライアントモッドにこれを前提として要求するものが多い intelliinput 日本語入力対応(MC1.9からは無くても日本語入力はできます)IntelliInputに関しては各自で調べるなりしてください。要Forge ※Windows専用 cocoainput mac用の日本語入力補助mod要Forge spawn checker モンスターがスポーンするブロックにマーカーを投影します日本人作者で安心のクオリティ 湧き潰しのお供に 要Forge Optifineと混同させるとテクスチャが両面表示になり、さらにシェーダーを有効化するとマーカーがちらついてしまうバグが発生しますので注意。 INventory tweeks 通称:整頓mod整頓以外にもインベントリとチェスト間でアイテムを一括移動したりと何かと便利 要Forge journeyMap ミニマップmod 要Forge voxelMap ミニマップmod 要LiteLoader ChatBubbles チャットをしたプレイヤーの頭上に吹き出しが表示される要LiteLoader 【プラグインとモッドの違い?】 Minecraftのプラグイン/モッドの分類はちょと独特です。他のゲームとは用語の使い方が若干違います。 タイプ 説明 プラグイン サーバ側に入っているだけで機能します。クライアントは何もしなくてもその機能を利用できます。 モッド クライアント側に入っているだけで機能するものとサーバとクライアントの双方に同じ(または互換性のある)ものが入っていないと機能しないものの2タイプがあります。2者を識別するためにクライアントだけで動作するモッドを「クライアントモッド」と呼ぶ場合があります。盆鯖で利用できるのはクライアントのみで動作する「クライアントモッド」だけです。 廃止されたspigotプラグイン プラグイン名 概要 ShopChest チェストショップ
https://w.atwiki.jp/medalofhonor/pages/177.html
アップローダー MOHI@まとめWIKI暫定アップローダー(100MBまで) MOD関連の話題を扱う掲示板はこちら。 自作MOD紹介 画像を載せるのはありですが、あまり大きな画像はやめてね。 アライドアサルト用MOD リアル武器性能+ショットガン・バズーカなしMOD 作者: MOHI管 バージョン: 0.1 備考: サーバーサイドMOD、SH・BTは非対応 全武器の連射速度や射程がリアル寄りになる他、威力が大幅に上がりライフルは胴体でもほぼ一撃必殺の威力になります。 射撃時の挙動も変わり、視点の跳ね上がりが射撃後も完全に元の位置に戻らなくなり連射時はそのズレを調節する必要があります。 また、狙撃ライフルのスコープは1発ごとにスコープから目を離すようになります。 手榴弾は3発でショットガン、バズーカ、パンツァーシュレックは使用不可能(選択すると拳銃と手榴弾のみ)になっています。 ダウンロード ナイトビジョンMOD 作者: DoubleTap ライフルスコープと双眼鏡に変更を加えてあります。 それにMG42の発射音も変えてあります。 ダウンロード ダウンロード2(より明るいビジョン) ライフルオンリーMOD 作者:イーグル 武器がライフルだけになるMODです。一定時間後(約5秒後)kar98が配布されます。 kar98の威力は75で、Health回復は25です。 ダウンロード 武器性能補正MOD 作者:イーグル 各武器の弾薬を少量にし、ショットガンを弱体化、ロケランの移動速度を極端に遅くしました。 Health回復は25です。 ダウンロード アライドアサルト リロード用MOD デザートイーグル 作者: 不明 備考: 無印・BTにも対応 一発の威力は80で、発射速度は遅めにしました。 ダウンロード AG36 作者: 不明 備考: 無印・BTにも対応 AG36のblack.verです。 ダウンロード 装備品追加 作者: 不明 備考: 無印・BTにも対応 このMODは連合、枢軸軍の兵士に装備品をつけるMODです。 通常サーバーでも使用可能。 ダウンロード test_CQB 作者: F91(,. 備考: BTにも対応 内容は練習MAPです。とはいっても敵はワルサーを装備してるのでなかなか手強いです。スタート地点には武器がおいてあります。 ダウンロード アライドアサルト リロードセカンド用MOD パシフィックアサルト用MOD v1.2パッチ日本語化MOD 作者: 不明 バージョン: ベータ 日本語版でv1.2パッチを当てた時に一部の項目が英語になるところを日本語に修正。 ダウンロード
https://w.atwiki.jp/mod-jplang/pages/79.html
MC1.6.2 最新版(Charge Pads-2.8.0.93)の日本語langファイルです # Language Japanese (JP) # Author Reiga # # Creative Tab # itemGroup.ChargePads=Charge Pads # # Damage sources # death.attack.chargePads.electrocution=%1$s は電気ショックで死亡した death.attack.chargePads.emitter.radiation=%1$s はエミッター放射で死亡した # # Charge Pads # item.chargePad.LV.name=スタティックチャージパッド item.chargePad.MV.name=クリスタライザーチャージパッド item.chargePad.HV.name=ラポトロニックチャージパッド item.chargePad.EV.name=フィッションチャージパッド # # Upgrade Kits # chargepads.upgradeKit.wrongside=充電パッドの下部で使用する必要があります。 chargepads.upgradeKit.zap=パッドはアクティブで、感電します! item.upgradeKit.crystalizor.name=クリスタライザーアップグレードキット item.upgradeKit.mfs.name=MFSUアップグレード item.upgradeKit.lapotronic.name=ラポトロニックアップグレードキット item.upgradeKit.fission.name=フィッションアップグレードキット item.upgradeKit.unknown.name=不明なアップグレード # # Upgrade Modules # item.chargePads.upgBasic.efficiency.name=効率強化アップグレード item.chargePads.upgEmitter.drain.name=吸収変換モジュール item.chargePads.upgEmitter.damage.name=ダメージ変換モジュール item.chargePads.upgEmitter.armour_priority.name=アーマー特化モジュール item.chargePads.upgProjector.proximity.name=近接充電モジュール item.chargePads.upgProjector.wide_band.name=広域充電モジュール item.chargePads.upgProjector.field_i.name=フィールド拡張モジュール・アルファ item.chargePads.upgProjector.field_ii.name=フィールド拡張モジュール・デルタ item.chargePads.upgProjector.field_iii.name=フィールド拡張モジュール・シータ item.chargePads.upgEmitter.unknown.name=不明なモジュール # # Charge Pads GUI # gui.chargePads.current=EU %d gui.chargePads.maximum=最大 %d # # Upgrade Modules Tooltip (strength colours are net.minecraft.util.EnumChatFormatting enumerates) # chargePads.emitter.restricted=制限中 chargePads.emitter.restricted.slot=エミッタースロット chargePads.emitter.restricted.nopvp=無効 chargePads.emitter.modulation=変調 chargePads.emitter.modulation.projector=プロジェクター chargePads.emitter.modulation.field=領域 chargePads.emitter.strength=強度 chargePads.emitter.strength.1.name=アルファ chargePads.emitter.strength.2.name=デルタ chargePads.emitter.strength.3.name=シータ chargePads.emitter.strength.1.colour=灰色 chargePads.emitter.strength.2.colour=水色 chargePads.emitter.strength.3.colour=赤色 コメント コメント欄の運営・編集方針に関してはコメント欄方針を参照してください。 このコメント欄はwikiの情報充実のため、追記がしやすいよう設けた物なので、編集が苦手な方は以下のコメントフォームへ書き込んでください。後に編集者が追記等をします。 表示される親コメには限りがあります。返信の際は返信したいコメント横のチェックを付けて返信するようご協力お願いします。 コメログ:工業系modアドオン/IC2add/charge/MC1.7.10 名前 バージョン選択に戻る トップページに戻る
https://w.atwiki.jp/gtamod/pages/36.html
GTASA MOD Wikiは移行しました 移行先はこちら→http //www18.atwiki.jp/gtamod2/ |A||CENTER Alfa Romeo Montreal作者:Redrum備考:コンバートURL| |C||CENTER Cadillac DTS 2008作者:nelly備考:URL| |I||CENTER Infiniti M45作者:nelly備考:URL| |K||CENTER 神奈川中央交通バス作者:ヤマド コンバート:nelly備考:MMDからのコンバートですURL| |L||CENTER Lexus LS600hl作者:Redrum備考:TDUからコンバートURL| |M||CENTER Mazda Familia S-wagon作者:Redrum備考:コンバートURL| |N||CENTER Nissan Fuga 2006作者:nelly備考:URL| |H||CENTER HINA-891 YAKUGAMI作者:みるちお備考:URL| |COLOR(#f9f9f9) |COLOR(#f9f9f9) |COLOR(#f9f9f9) 表の整形のための文字です表の整形のための文字です|
https://w.atwiki.jp/kasogame/pages/36.html
Source MODはHL2などのSource Engineを利用したゲームを購入すると、 STEAM→ライブラリ→ツールの方からダウンロードができるようになるSource SDKを必要とします。 Source SDKにもいろいろ種類があるので注意 とりあえずThe Orange Boxを買っておけば、大丈夫だと思われる。 GoldenEye Source Coven Modular Combat NEOTOKYO° Obsidian Conflict Suicide Survival Battle Grounds 2 Synergy
https://w.atwiki.jp/bannerlord/pages/92.html
基本事項用語 実装パターン レイヤー追加パターンの実装例Example UI Opponent Health Bar 基本事項 用語 Gauntlet UI Bannerlord のユーザーインターフェースに用いられているフレームワークです。 Model-View-ViewModel アーキテクチャー Gauntlet UI は Model-View-ViewModel (MVVM) と呼ばれるアーキテクチャーパターンを採用しています。要は、ゲームの領域、UI の領域、その2つを仲介する領域、の3層に分離させることで、情報を整理しやすく、また分業しやすくするという発想のようです。UI の MOD の場合、実装が必要なのはこの内の View と ViewModel になります。 この辺は、WPF や XAML を触ったことのある方ならお馴染みなのかもしれませんが、そうでない方も、あまり深く考えずに概念として何となく把握していれば大丈夫です。 ウィジェット GUI を構成する部品です。TaleWorlds.GauntletUI や TaleWorlds.MountAndBlade.GauntletUI.Widgets あたりに一通り揃っています。基本的にはこれらで事足りるので、自分でウィジェットを定義するということはあまり無いのではないかと思われます。 Prefab GUI のレイアウトを定義する XML ファイルです。プレハブ建築のプレハブと同じで、出来合いの部品 (ウィジェットや他の Prefab) をどういう風に組み合わせて配置するかを指定し、なにがしかの UI 機能を提供する大きめの部品として独立させたものです。 Prefab は TaleWorlds.Engine.GauntletUI.GauntletLayer.LoadMovie() するたびに読み込まれるので、ゲーム起動中にレイアウトを確認しながら編集していくなんてこともできます。(もちろん、構文エラー等があればその時点でクラッシュしますが) Brush GUI のスタイルを定義する XML ファイルです。Prefab と Brush の関係は、HTML と CSS の関係と似たようなものだそうです。 Widget に複数の状態が定義されていれば、それぞれの状態に応じたスプライト画像やフォント等を Brush に持たせることで、Widget に視覚的変化を与えることができます。例えば、Wiget がデフォルト状態にある時のスプライト、マウスオーバー時のスプライト、クリックした時のスプライト、Disable 時のスプライトなどをまとめられる、と言えばわかりやすいでしょうか。 ブラシは、Native 等の公式モジュールの GUI\Brushes に多数定義されています。 実装パターン 一部のパターンでしか実験していません。「たぶんこういうことだろう」レベルの推測が混じっています。 追加 既存の UI スクリーンにレイヤーを追加し、そこに自前の GUI を描画する (AddLayer)。 標準的な方法です。自分で View も ViewModel も用意するので好きなようにデザインできますが、既存の GUI そのものを書き換えることはできません。 モジュールとしての競合は起こりませんが、意図せず他の MOD の GUI と表示位置がかぶってしまうことはあり得ます。 改変 (未検証) 既存の UI スクリーンのレイアウトだけを変更する (XML 改変)。 使用するデータソース (ViewModel) はそのままで、XML の書き換えによって GUI の配置なんかを変える方法です。簡単だと思いますが、おそらくやれることは限定的です。また、MOD の競合が発生しうる方法だと思われます。 上書き (未検証) 既存の UI スクリーン全体をオーバーライドする (OverrideView)。 上書きする UI スクリーンが提供していた機能を自分で実装することになるため難易度は高いでしょう。また、MOD の競合が発生しうる方法だと思われます。 新規作成 自前の UI スクリーンを作成し、何かのイベントに伴ってそのスクリーンを呼び出す (PushScreen)。 Push/Pop のスタック形式なのでモーダルなポップアップとかに向いていると思います。 一部改変 たとえばオプション項目の追加などがこれに当たりますが、現状ではできないようです。 ただ、可能にする方法は検討されているとのこと。 Beyond that, we continue to work on Adding support for adding options to the options screen レイヤー追加パターンの実装例 Example UI ExampleUI プロジェクトSubModule.cs ViewsSampleMapView.cs SampleMissionView.cs ViewModelsTestWindowVM.cs ExampleUI.Window.xml View と ViewModel の関係がはっきりするように階層 (名前空間) を分けています。 ExampleUI.Window.xml は、 [Bannerlord インストールフォルダー]\Modules\ExampleUI\GUI\Prefabs フォルダーを作成し、その中に保存します。 MVVM では疎結合 (各層の結びつきが緩やか) なのが望ましいとされているそうなので、参照はできるだけ一方向になるようにしましょう。 すなわち、 View が ViewModel のインスタンスを持ち、その逆方向のアクセスはしない Model (ゲーム内の要素) に属するデータの加工は View の中では行わず、ViewModel で行う という感じです。 コード +SubModule.cs モジュールのエントリーポイントです。 using ExampleUI.Views;using SandBox.View.Map;using System;using TaleWorlds.Core;using TaleWorlds.Engine.Screens;using TaleWorlds.MountAndBlade;using TaleWorlds.MountAndBlade.View.Missions;using TaleWorlds.MountAndBlade.View.Screen; namespace ExampleUI{ public class SubModule MBSubModuleBase { private MissionView _missionView; private MapView _mapView; // Mission (平たく言えば、キャラクターが動き回ったり攻撃したりできる状況) に対する // MOD の処理 (ビヘイビアー) の登録はこのメソッドで行います。 // OnBeforeMissionBehaviourInitialize() と OnMissionBehaviourInitialize() の違いは // MissionBehaviour.OnBehaviourInitialize() の前に呼ばれるか後によばれるかです。 public override void OnBeforeMissionBehaviourInitialize(Mission mission) { base.OnBeforeMissionBehaviourInitialize(mission); // ViewCreatorManager.CreateMissionView() は一応ファクトリーメソッドっぽいのですが、 // 公式のコードには、これを介さず単に new MissionView() しているものもあったりして // よく分かりません。どっちにしろ動くのは動きます。 _missionView = ViewCreatorManager.CreateMissionView SampleMissionView (false, mission, Array.Empty object ()); mission.AddMissionBehaviour(_missionView); /* mission.AddMissionBehaviour(_missionView = new SampleMissionView()); */ // このサンプルでは、全ての Mission でテスト GUI が表示されてしまいますが、 // 戦闘シーンだけに表示したいなどといった場合、何らかの工夫が必要になるでしょう。 // // ちなみに、OnBeforeMissionBehaviourInitialize() 時点で mission.Mode は MissionMode.StartUp 固定なので、 // 以下の方法は使えませんでした。 /* if (mission.Mode == MissionMode.Battle) { _missionView = ViewCreatorManager.CreateMissionView SampleMissionView (false, mission, Array.Empty object ()); mission.AddMissionBehaviour(_missionView); } */ } // MapScreen (ワールドマップの描画スクリーン) には OnBeforeMissionBehaviourInitialize() に相当する // メソッドが用意されていないので、スクリーンの Push/Pop イベントを利用してレイヤーを挿入しています。 public override void OnGameInitializationFinished(Game game) { base.OnGameInitializationFinished(game); ScreenManager.OnPushScreen += OnScreenManagerPushScreen; // Obsolete /* ScreenManager.OnPopScreen += OnScreenManagerPopScreen; */ } public override void OnGameEnd(Game game) { ScreenManager.OnPushScreen -= OnScreenManagerPushScreen; // Obsolete /* ScreenManager.OnPopScreen -= OnScreenManagerPopScreen; */ base.OnGameEnd(game); } private void OnScreenManagerPushScreen(ScreenBase pushedScreen) { if (pushedScreen is MapScreen mapScreen) { _mapView = mapScreen.AddMapView SampleMapView (Array.Empty object ()); } /* else if (pushedScreen is MissionScreen missionScreen missionScreen.Mission != null) { // MissionScreen は、まず空の MissionScreen を Push してから、ローディング画面を // 表示しつつスクリーンを初期化していく感じなので、MapScreen と同じ手法は使えません。 // // この時点で missionScreen.Mission には中身がないので、CreateMissionView() は失敗します。 _missionView = ViewCreatorManager.CreateMissionView SampleMissionView (false, missionScreen.Mission, Array.Empty object ()); missionScreen.AddMissionView(_missionView); } */ } [Obsolete("1.6.0より前の手法")] private void OnScreenManagerPopScreen(ScreenBase poppedScreen) { if (_mapView != null poppedScreen is MapScreen mapScreen) { // 1.6.0 からは MapScreen が破棄される際に勝手に MapView.OnFinalize() を呼んでくれるようになったので // MapView と MapScreen の寿命を同じにする限りでは、MapScreen.RemoveMapView() をする必要がなくなりました。 mapScreen.RemoveMapView(_mapView); _mapView = null; } else if (_missionView != null poppedScreen is MissionScreen) { // MissionView については、MissionScreen.OnEndMission() が OnMissionScreenFinalize() の呼び出しから // RemoveMissionBehaviour() まで勝手にやってくれます。 _missionView = null; } // したがって、_mapView と _missionView はもはや必要のないフィールドなのですが、説明用に残してあります。 } }} +SampleMapView.cs using ExampleUI.ViewModels;using SandBox.View.Map;using TaleWorlds.Engine.GauntletUI;using TaleWorlds.GauntletUI.Data;using TaleWorlds.InputSystem;using TaleWorlds.Library; namespace ExampleUI.Views{ public class SampleMapView MapView { private TestWindowVM _dataSource; private GauntletLayer _gauntletLayer; private IGauntletMovie _gauntletMovie; protected override void CreateLayout() { base.CreateLayout(); _dataSource = new TestWindowVM(); // localOrder (レイヤーの優先度) が小さいほど、他のレイヤーより下 (画面奥) に描画されます。 // // 例えば、部隊が町などに入った際に左に表示されるメニュー (GauntletMenuBase) のレイヤー優先度は 100 なので、 // それより小さい値に設定すればテストウィンドウがメニューの下に表示されるようになります。 // ESC メニュー (GauntletMapEscapeMenu) のレイヤー優先度が 4400 なので、これよりは小さい値に // した方がよさそうです。あるいは、ESC メニュー表示中は GUI を非表示にする処理を追加しましょう。 _gauntletLayer = new GauntletLayer(4000); Layer = _gauntletLayer; // Movie (= Screen に投影するもの) とは、XML から取得した UI の構造と、ViewModel (表示するデータ) を合わせた概念です。 _gauntletMovie = _gauntletLayer.LoadMovie("ExampleUI.Window", _dataSource); // このレイヤーの描画領域に対して行われた入力のうち、受け取るものをビットフラグによって管理しています。 _gauntletLayer.InputRestrictions.SetInputRestrictions(true, InputUsageMask.MouseButtons); MapScreen.AddLayer(_gauntletLayer); } // MapScreen.OnFinalize() によって呼び出されます。 protected override void OnFinalize() { MapScreen.RemoveLayer(_gauntletLayer); _gauntletLayer.InputRestrictions.ResetInputRestrictions(); _gauntletLayer.ReleaseMovie(_gauntletMovie); _gauntletLayer = null; Layer = null; _dataSource.OnFinalize(); base.OnFinalize(); } // 毎ティック行う処理を記述します。 // // dt デルタタイム。前回のティックからの経過時間です。 protected override void OnFrameTick(float dt) { base.OnFrameTick(dt); if (MapScreen.Input.IsKeyPressed(InputKey.Home)) { _dataSource.IsVisible ^= true; // bool 反転 } } }} +SampleMissionView.cs SampleMapView とは使用するメソッドが違うだけで、やっていることは全く同じです。 using ExampleUI.ViewModels;using TaleWorlds.Engine.GauntletUI;using TaleWorlds.GauntletUI.Data;using TaleWorlds.InputSystem;using TaleWorlds.MountAndBlade.View.Missions; namespace ExampleUI.Views{ public class SampleMissionView MissionView { private TestWindowVM _dataSource; private GauntletLayer _gauntletLayer; private IGauntletMovie _gauntletMovie; public override void OnMissionScreenInitialize() { base.OnMissionScreenInitialize(); _dataSource = new TestWindowVM(); // localOrder (レイヤーの優先度) が小さいほど、他のレイヤーより下 (画面奥) に描画されます。 // // ESC メニュー (GauntletMissionEscapeMenu) のレイヤー優先度が 50 なので、 これよりは小さい // した方がよさそうです。あるいは、ESC メニュー表示中は GUI を非表示にする処理を追加しましょう。 _gauntletLayer = new GauntletLayer(40); // Movie (= Screen に投影するもの) とは、XML から取得した UI の構造と、ViewModel (表示するデータ) を合わせた概念です。 _gauntletMovie = _gauntletLayer.LoadMovie("ExampleUI.Window", _dataSource); // このレイヤーの描画領域に対して行われた入力のうち、受け取るものをビットフラグによって管理しています。 /* _gauntletLayer.InputRestrictions.SetInputRestrictions(true, InputUsageMask.MouseButtons); */ // Mission 中はマウスを視点移動や攻撃に使うため、ポインティングデバイスとして使うには、 // 戦闘結果画面において、Tab を押す - リザルトとマウスカーソル表示 - ボタンが押せるようになる // とやっているような感じで、キーボード操作を挟んで切り替える必要があります。 // 今回はそこまで実装していないため、Mission 中は閉じるボタンをクリックできません。 MissionScreen.AddLayer(_gauntletLayer); } // MissionScreen.OnEndMission() によって呼び出されます。 public override void OnMissionScreenFinalize() { MissionScreen.RemoveLayer(_gauntletLayer); _gauntletLayer.ReleaseMovie(_gauntletMovie); _gauntletLayer = null; _dataSource.OnFinalize(); base.OnMissionScreenFinalize(); } // 毎ティック行う処理を記述します。 // // dt デルタタイム。前回のティックからの経過時間です。 public override void OnMissionScreenTick(float dt) { base.OnMissionScreenTick(dt); if (Input.IsKeyPressed(InputKey.Home)) { _dataSource.IsVisible ^= true; // bool 反転 } } }} +TestWindowVM.cs ViewModel とは View を抽象化したものです。今回の例では、 画面左上にウィンドウを表示 ウィンドウの中には閉じるボタン1つだけ 閉じるボタンを押すとウィンドウが閉じる Home キーでも開いたり閉じたりできる というモデルで行きます。 TestWindowVM は View から完全に分離されているので、今回使う2つの View どちらにもそのまま使用できます。 using TaleWorlds.Core;using TaleWorlds.Library;// View-ViewModel の参照を一方向にするため using ExampleUI.Views をやっていません。 namespace ExampleUI.ViewModels{ // ViewModel は全て TaleWorlds.Library.ViewModel を継承して作ります。 // クラス名に VM を付けなければならないという決まりがあるわけではないのですが、 // 公式の ViewModel は全て VM を付けているようなので踏襲しています。 public class TestWindowVM ViewModel { private bool _isVisible; public TestWindowVM() { IsVisible = true; } // ViewModel のプロパティやメソッドは、View の LoadMovie で関連付けられた XML Prefab から参照できます。 // XML の方を見てもらえば、それらがどのように使われているか分かるかと思います。 [DataSourceProperty] public bool IsVisible { get = _isVisible; set { if (_isVisible != value) { _isVisible = value; // このメソッドを呼ぶことで、TestWindowVM にバインディングされた View に対して // TestWindowVM.IsVisible プロパティの変更通知が行き、プロパティを参照している // ウィジェットの方も状態が変化するという仕組みです。 OnPropertyChangedWithValue(value, "IsVisible"); } } } // こちらは値の変更がない固定ラベルなので、set アクセサーや OnPropertyChangedWithValue() は使っていません。 [DataSourceProperty] public string WindowTitle = "Test Window"; // 以前はラベルにも日本語が使えたのですが、1.6.0 から文字化けするようになってしまいました。 [DataSourceProperty] public string CloseButtonLabel = "Close"; // ButtonWidget のクリックイベントに応じて呼ばれるよう、ExampleUI.Window.xml に記述してあります。 public void OnCloseButtonClick() { IsVisible = false; InformationManager.DisplayMessage(new InformationMessage("ウィンドウを閉じました。\n再度開くには Home キーを押してください。")); } }} DataSourceProperty 属性 公式の ViewModel 派生クラスのプロパティにはこの属性を与えられたものが多く見受けられますが、ソースコードを見ても特に何か定義されているわけでもなく、実際、属性を付けても付けなくても動作は変わらないように見えます。唯一、ViewModel.Properties プロパティで DataSourceProperty のリストを作るのに使われているようですが、このプロパティは他からは特に参照されていないようです。一応、XML から参照されるプロパティには全てこの属性を付けてあります。 +ExampleUI.Window.xml ExampleUI で使うウィンドウの Prefab です。 Prefab Window Widget WidthSizePolicy="Fixed" HeightSizePolicy="Fixed" SuggestedWidth="400" SuggestedHeight="300" IsVisible="@IsVisible" Children Standard.Window Parameter.Title="@WindowTitle" Children Standard.PopupCloseButton Parameter.ButtonText="@CloseButtonLabel" Parameter.ButtonAction="OnCloseButtonClick" / /Children /Standard.Window /Children /Widget /Window /Prefab Widget TaleWorlds.GauntletUI.Widget クラスです。Widget クラスは基底クラスとしてデータを保持しているだけで、UI としての機能はありません。ここでは、他の UI をまとめるコンテナとして使っています。 SizePolicy Fixed 指定の幅にしますStretchToParent 親要素の幅に合わせますCoverChildren 子要素を全て表示できる幅にします IsVisible="@IsVisible" 名前が同じで分かりにくいですが、最初の方が Widget クラスのプロパティ、@付きの方がデータソースとなる ViewModel 派生クラス (今回の例で言えば TestWindowVM) のプロパティとなります。このように指定することで、TestWindowVM.IsVisible の中で呼んである ViewModel.OnPropertyChangedWithValue() によって発せられたイベントが Widget に届くようになり、TestWindowVM.IsVisible と Widget.IsVisible が連動するわけです。 Standard.Window と Standard.PopupCloseButton 公式の Prefab を使っています。公式の Prefab も大半は各シチュエーションに特化した大型のものばかりで、そのままでの再利用はしにくいですが、Native\GUI\Prefabs\Standard にあるものは比較的小型で汎用性が高くなっています。 Parameter Standard.Window 等の Prefab では Parameter が宣言されているものがあり、Widget のプロパティに値を渡すのと同じ感覚で、Prefab 自体に値を渡すことができます。Prefab 側では、自分の中の Widget に受け取った値を渡すよう記述されています。 結果 MapScreen MissionScreen 左上にウィンドウっぽいものが表示されています。Prefab を適当に選んだのでデザインがめちゃくちゃですが、画面上にとりあえず何かを表示する例ということで大目に見てください。 手順をおおまかにまとめると、 作りたい UI を考える その構想に沿った GUI の構造 (Prefab) と表示するデータ (ViewModel) を用意する 用意したものを、表示先がワールドマップなら MapView、戦闘などの Mission なら MissionView で LoadMovie() する View をスクリーンに追加する となります。 Opponent Health Bar 今度はもう少し実践的な MOD を作っていきます。見出しが示す通り、戦っている相手の HP バーを表示する MOD です。 イメージとしてはこんな感じ。 OpponentHealthBar プロジェクトSubModule.cs MissionOpponentHealthBar.cs OpponentHealthVM.cs OpponentHealthBar.xml OpponentHealthBar.xml は、 [Bannerlord インストールフォルダー]\Modules\OpponentHealthBar\GUI\Prefabs の中に保存します。 バージョン1 それでは、とりあえず簡単に文字で表示するところから始めてみます。 +SubModule.cs using System;using TaleWorlds.MountAndBlade;using TaleWorlds.MountAndBlade.View.Missions; namespace OpponentHealthBar{ public class SubModule MBSubModuleBase { public override void OnBeforeMissionBehaviourInitialize(Mission mission) { base.OnBeforeMissionBehaviourInitialize(mission); mission.AddMissionBehaviour( ViewCreatorManager.CreateMissionView MissionOpponentHealthBar (false, mission, Array.Empty object ())); } }} +MissionOpponentHealthBar.cs using TaleWorlds.Core;using TaleWorlds.Engine.GauntletUI;using TaleWorlds.GauntletUI.Data;using TaleWorlds.MountAndBlade;using TaleWorlds.MountAndBlade.View.Missions; namespace OpponentHealthBar{ public class MissionOpponentHealthBar MissionView { private OpponentHealthVM _dataSource; private GauntletLayer _gauntletLayer; private IGauntletMovie _gauntletMovie; public MissionOpponentHealthBar() { ViewOrderPriorty = 20; } public override void OnMissionScreenInitialize() { base.OnMissionScreenInitialize(); _dataSource = new OpponentHealthVM(); _gauntletLayer = new GauntletLayer(ViewOrderPriorty); _gauntletMovie = _gauntletLayer.LoadMovie("OpponentHealthBar", _dataSource); MissionScreen.AddLayer(_gauntletLayer); } public override void OnMissionScreenFinalize() { MissionScreen.RemoveLayer(_gauntletLayer); _gauntletLayer.ReleaseMovie(_gauntletMovie); _gauntletLayer = null; _dataSource.OnFinalize(); base.OnMissionScreenFinalize(); } // 画面中央 (マウスカーソルの位置) と、一番手前にある IFocusable なオブジェクトとが交差した瞬間に呼ばれます。 // // agent フォーカスした Agent。シングルプレイだと、おそらく常に Agent.Main (プレイヤーキャラクター) です。 // focusableObject フォーカスされたもの // isInteractable Talk や Use などのインタラクトが可能か // // フォーカスが 10m までしか利かないのは MissionMainAgentInteractionComponent.FocusTick() で // 決められた仕様なのでどうしようもありません。 public override void OnFocusGained(Agent agent, IFocusable focusableObject, bool isInteractable) { base.OnFocusGained(agent, focusableObject, isInteractable); _dataSource.OnFocusChanged(focusableObject); } // 今までフォーカスされていた IFocusable なオブジェクトから、フォーカスが外れた瞬間に呼ばれます。 // // agent フォーカスしていた Agent。シングルプレイだと、おそらく常に Agent.Main (プレイヤーキャラクター) です。 // focusableObject フォーカスされていたもの public override void OnFocusLost(Agent agent, IFocusable focusableObject) { base.OnFocusLost(agent, focusableObject); _dataSource.OnFocusChanged(focusableObject); } // Agent が何らかの攻撃を受けた際に呼ばれます。 // // affectedAgent 攻撃を受けた Agent // affectorAgent 攻撃を行った Agent // damage ダメージ量 // affectorWeapon 使用された武器 public override void OnAgentHit(Agent affectedAgent, Agent affectorAgent, int damage, in MissionWeapon affectorWeapon) { base.OnAgentHit(affectedAgent, affectorAgent, damage, affectorWeapon); _dataSource.OnAgentHit(affectedAgent); } // Agent が戦闘不能になった際に呼ばれます。 // // affectedAgent 攻撃を受けた Agent // affectorAgent 攻撃を行った Agent // agentState Agent の状態 // blow とどめの一撃の内容 // // 似たようなメソッドに OnAgentDeleted がありますが、そちらは // 戦闘不能になって倒れている Agent が時間経過や表示限界により消滅する際に呼ばれるようです。 public override void OnAgentRemoved(Agent affectedAgent, Agent affectorAgent, AgentState agentState, KillingBlow blow) { base.OnAgentRemoved(affectedAgent, affectorAgent, agentState, blow); _dataSource.OnAgentRemoved(affectedAgent); } }} +OpponentHealthVM.cs 今度のモデルは、 Agent (Mission 中に動きうるもの) の HP 現在値/最大値 を文字で表示する Agent にフォーカスが合うと表示、フォーカスが外れると非表示 とします。 using System;using TaleWorlds.Library;using TaleWorlds.MountAndBlade; namespace OpponentHealthBar{ public class OpponentHealthVM ViewModel { private Agent _opponent; private string _strValues; private bool _isVisible; private const string ValueFormat = "{0} / {1}"; public OpponentHealthVM() { _opponent = null; _strValues = string.Empty; _isVisible = false; } [DataSourceProperty] public string StrValues { get = _strValues; private set { if (_strValues != value) { _strValues = value; OnPropertyChangedWithValue(value, "StrValues"); } } } [DataSourceProperty] public bool IsVisible { get = _isVisible; set { if (_isVisible != value) { _isVisible = value; OnPropertyChangedWithValue(value, "IsVisible"); } } } // GUI に表示するデータの更新はこのメソッドで行います。 // ただし、ここに記述すればあとは勝手に更新されていくというものではないので、 // 自分が必要な場所では自分で呼び出さなければなりません。 public override void RefreshValues() { base.RefreshValues(); int currentValue = (int)Math.Ceiling(_opponent?.Health ?? 0f); int maxValue = (int)Math.Ceiling(_opponent?.HealthLimit ?? 0f); StrValues = string.Format(ValueFormat, currentValue, maxValue); IsVisible = _opponent != null; } public void OnFocusChanged(IFocusable focusableObject) { if (focusableObject is Agent possibleOpponent) { _opponent = (_opponent == null || _opponent != possibleOpponent) ? possibleOpponent null; RefreshValues(); } } public void OnAgentHit(Agent affectedAgent) { if (_opponent == affectedAgent) { RefreshValues(); } } public void OnAgentRemoved(Agent removedAgent) { if (_opponent == removedAgent) { // 先にフォーカスロストが発生してここには入らないかも。 OnFocusChanged(removedAgent); } } }} +OpponentHealthBar.xml Prefab Window Widget WidthSizePolicy="Fixed" HeightSizePolicy="Fixed" SuggestedWidth="430" SuggestedHeight="50" HorizontalAlignment="Center" VerticalAlignment="Top" MarginTop="250" IsVisible="@IsVisible" Children TextWidget Text="@StrValues" WidthSizePolicy="CoverChildren" HeightSizePolicy="CoverChildren" HorizontalAlignment="Center" VerticalAlignment="Center" Brush="Tooltip.Text" Brush.FontSize="24" / /Children /Widget /Window /Prefab Alignment 親要素の領域内のどちら側に寄せるかです。親要素より幅が小さい場合にしか効果がありません。この例の TextWidget で言うと、親要素は幅 430、自身は CoverChildren、つまり StrValues が入りきるだけの幅なので機能していますが、これを StretchToParent とかにすると、左寄せや右寄せが機能しなくなります。 Margin Left, Top, Right, Bottom のマージンです。幅+マージンが要素の実際の幅になります。 以上を実行した状態が下の画像です。 ちょっと見にくいですが、画面上部中央に相手の HP 100/100 が表示されていますね。フォーカスを外せば数字は消えます。しかし、今のところ町人だろうが馬だろうが Agent なら何にでも表示されてしまいますので、そこは改良が必要です。 バージョン2 次はバーの導入とその他の改良を行っていきたいと思います。 バー表示に使うのは FillBarWidget です。ソースコードや、FillBarWidget を使用している公式の Prefab を見てみると、FillBarWidget.MaxAmount プロパティと FillBarWidget.InitialAmmount プロパティに値を渡せばとりあえず動きそうです。よって、ViewModel 側でその値を用意してやる必要があります。 +OpponentHealthVM.cs [DataSourceProperty] public int CurrentValue { get = _currentValue; private set { if (_currentValue != value) { _currentValue = value; OnPropertyChangedWithValue(value, "CurrentValue"); } } } [DataSourceProperty] public int MaxValue { get = _maxValue; private set { if (_maxValue != value) { _maxValue = value; OnPropertyChangedWithValue(value, "MaxValue"); } } } // GUI に表示するデータの更新はこのメソッドで行います。 // ただし、ここに記述すればあとは勝手に更新されていくというものではないので、 // 自分が必要な場所では自分で呼び出さなければなりません。 public override void RefreshValues() { base.RefreshValues(); // 元々ローカル変数だったものを、View から参照できるようにプロパティに昇格しました。 CurrentValue = (int)Math.Ceiling(_opponent?.Health ?? 0f); MaxValue = (int)Math.Ceiling(_opponent?.HealthLimit ?? 0f); StrValues = string.Format(ValueFormat, CurrentValue, MaxValue); IsVisible = _opponent != null; } public void OnFocusChanged(IFocusable focusableObject) { // 適切な相手に表示されるよう条件を追加しました。 if (focusableObject is Agent possibleOpponent possibleOpponent.IsHuman possibleOpponent.IsEnemyOf(Agent.Main)) { _opponent = (_opponent == null || _opponent != possibleOpponent) ? possibleOpponent null; RefreshValues(); } } ViewModel にプロパティを追加したので、今度は Prefab を通じてそれらを FillBarWidget に渡します。 +OpponentHealthBar.xml Prefab Window FillBarWidget WidthSizePolicy="Fixed" HeightSizePolicy="Fixed" SuggestedWidth="430" SuggestedHeight="50" HorizontalAlignment="Center" VerticalAlignment="Top" MarginTop="250" ContainerWidget="FillBarContainer" FillWidget="FillVisualParent\FillVisual" MaxAmount="@MaxValue" InitialAmount="@CurrentValue" IsVisible="@IsVisible" Children Widget Id="FillVisualParent" WidthSizePolicy="Fixed" HeightSizePolicy="StretchToParent" SuggestedWidth="400" HorizontalAlignment="Center" VerticalAlignment="Center" MarginTop="10" MarginBottom="10" Sprite="BlankWhiteSquare" Color="#202020A0" Children BrushWidget Id="FillVisual" WidthSizePolicy="Fixed" HeightSizePolicy="StretchToParent" SuggestedWidth="400" HorizontalAlignment="Left" Brush="Mission.MainAgentHUD.HeroHealthBar.Fill" / /Children /Widget Widget Id="FillBarContainer" WidthSizePolicy="StretchToParent" HeightSizePolicy="StretchToParent" Sprite="options_memory_progress_frame" / TextWidget Text="@StrValues" WidthSizePolicy="CoverChildren" HeightSizePolicy="CoverChildren" HorizontalAlignment="Center" VerticalAlignment="Center" PositionYOffset="3" Brush="Tooltip.Text" Brush.FontSize="24" / /Children /FillBarWidget /Window /Prefab FillBarWidget バージョン1ではただの Widget だったトップレベルのウィジェットを FillBarWidget に変更してあります (3行目)。 FillVisual 赤ゲージの Brush を保持した BrushWidget の ID です (9行目)。このように、Widget には任意の ID がつけられます。それによって、他のウィジェットを操作するタイプのウィジェットに対し、操作対象がどれなのか伝えることができます。 ここでは、FillBarWidget.FillWidget プロパティに渡して、FillBarWidget が "FillVisual" の幅を操作できるようにしています。 親要素の "FillVisualParent" はゲージが減った部分を埋める背景画像です。"BlankWhiteSquare" という無地画像を、暗い半透明に着色・透過させて使っています。 FillBarContainer 14行目にある、スプライト画像を保持した Widget の ID です。これを FillBarWidget.ContainerWidget プロパティに渡してバーの枠としています。 ところで、Mission 用の GUI はそのままだとフォトモード中でも表示されてしまいます。構図を決めている間に GUI が表示されてしまうのは邪魔ですから、MissionView を使うときは、フォトモード中 GUI を非表示にする処理を追加しておきましょう。 +MissionOpponentHealthBar.cs // フォトモードで構図を決めている最中に GUI が表示されないようにするための処理です。 // この処理を入れても入れなくても、どちらにしろ出力される画像ファイルに GUI は写りません。 public override void OnPhotoModeActivated() { base.OnPhotoModeActivated(); _gauntletLayer._gauntletUIContext.ContextAlpha = 0f; } public override void OnPhotoModeDeactivated() { base.OnPhotoModeDeactivated(); _gauntletLayer._gauntletUIContext.ContextAlpha = 1f; } 結果 攻撃前 攻撃後 どうでしょう、一応 HP バーらしくなったのではないでしょうか。 他にも、与えたダメージ分のバーをスライドさせる視覚効果とか、フォーカスが外れてからバーが消えるまでに時間差を設けるとか、改良はいろいろ考えられますが、サンプルではここまでです。興味があったら自分の MOD として実装してみてください。 +コード最終形 SubModule.cs using System;using TaleWorlds.MountAndBlade;using TaleWorlds.MountAndBlade.View.Missions; namespace OpponentHealthBar{ public class SubModule MBSubModuleBase { public override void OnBeforeMissionBehaviourInitialize(Mission mission) { base.OnBeforeMissionBehaviourInitialize(mission); mission.AddMissionBehaviour( ViewCreatorManager.CreateMissionView MissionOpponentHealthBar (false, mission, Array.Empty object ())); } }} MissionOpponentHealthBar.cs using TaleWorlds.Core;using TaleWorlds.Engine.GauntletUI;using TaleWorlds.GauntletUI.Data;using TaleWorlds.MountAndBlade;using TaleWorlds.MountAndBlade.View.Missions; namespace OpponentHealthBar{ public class MissionOpponentHealthBar MissionView { private OpponentHealthVM _dataSource; private GauntletLayer _gauntletLayer; private IGauntletMovie _gauntletMovie; public MissionOpponentHealthBar() { ViewOrderPriorty = 20; } public override void OnMissionScreenInitialize() { base.OnMissionScreenInitialize(); _dataSource = new OpponentHealthVM(); _gauntletLayer = new GauntletLayer(ViewOrderPriorty); _gauntletMovie = _gauntletLayer.LoadMovie("OpponentHealthBar", _dataSource); MissionScreen.AddLayer(_gauntletLayer); } public override void OnMissionScreenFinalize() { MissionScreen.RemoveLayer(_gauntletLayer); _gauntletLayer.ReleaseMovie(_gauntletMovie); _gauntletLayer = null; _dataSource.OnFinalize(); base.OnMissionScreenFinalize(); } // 画面中央 (マウスカーソルの位置) と、一番手前にある IFocusable なオブジェクトとが交差した瞬間に呼ばれます。 // // agent フォーカスした Agent。シングルプレイだと、おそらく常に Agent.Main (プレイヤーキャラクター) です。 // focusableObject フォーカスされたもの // isInteractable Talk や Use などのインタラクトが可能か // // フォーカスが 10m までしか利かないのは MissionMainAgentInteractionComponent.FocusTick() で // 決められた仕様なのでどうしようもありません。 public override void OnFocusGained(Agent agent, IFocusable focusableObject, bool isInteractable) { base.OnFocusGained(agent, focusableObject, isInteractable); _dataSource.OnFocusChanged(focusableObject); } // 今までフォーカスされていた IFocusable なオブジェクトから、フォーカスが外れた瞬間に呼ばれます。 // // agent フォーカスしていた Agent。シングルプレイだと、おそらく常に Agent.Main (プレイヤーキャラクター) です。 // focusableObject フォーカスされていたもの public override void OnFocusLost(Agent agent, IFocusable focusableObject) { base.OnFocusLost(agent, focusableObject); _dataSource.OnFocusChanged(focusableObject); } // Agent が何らかの攻撃を受けた際に呼ばれます。 // // affectedAgent 攻撃を受けた Agent // affectorAgent 攻撃を行った Agent // damage ダメージ量 // affectorWeapon 使用された武器 public override void OnAgentHit(Agent affectedAgent, Agent affectorAgent, int damage, in MissionWeapon affectorWeapon) { base.OnAgentHit(affectedAgent, affectorAgent, damage, affectorWeapon); _dataSource.OnAgentHit(affectedAgent); } // Agent が戦闘不能になった際に呼ばれます。 // // affectedAgent 攻撃を受けた Agent // affectorAgent 攻撃を行った Agent // agentState Agent の状態 // blow とどめの一撃の内容 // // 似たようなメソッドに OnAgentDeleted がありますが、そちらは // 戦闘不能になって倒れている Agent が時間経過や表示限界により消滅する際に呼ばれるようです。 public override void OnAgentRemoved(Agent affectedAgent, Agent affectorAgent, AgentState agentState, KillingBlow blow) { base.OnAgentRemoved(affectedAgent, affectorAgent, agentState, blow); _dataSource.OnAgentRemoved(affectedAgent); } // フォトモードで構図を決めている最中に GUI が表示されないようにするための処理です。 // この処理を入れても入れなくても、どちらにしろ出力される画像ファイルに GUI は写りません。 public override void OnPhotoModeActivated() { base.OnPhotoModeActivated(); _gauntletLayer._gauntletUIContext.ContextAlpha = 0f; } public override void OnPhotoModeDeactivated() { base.OnPhotoModeDeactivated(); _gauntletLayer._gauntletUIContext.ContextAlpha = 1f; } }} OpponentHealthVM.cs using System;using TaleWorlds.Library;using TaleWorlds.MountAndBlade; namespace OpponentHealthBar{ public class OpponentHealthVM ViewModel { private Agent _opponent; private int _currentValue; private int _maxValue; private string _strValues; private bool _isVisible; private const string ValueFormat = "{0} / {1}"; public OpponentHealthVM() { _opponent = null; _strValues = string.Empty; _isVisible = false; } [DataSourceProperty] public int CurrentValue { get = _currentValue; private set { if (_currentValue != value) { _currentValue = value; OnPropertyChangedWithValue(value, "CurrentValue"); } } } [DataSourceProperty] public int MaxValue { get = _maxValue; private set { if (_maxValue != value) { _maxValue = value; OnPropertyChangedWithValue(value, "MaxValue"); } } } [DataSourceProperty] public string StrValues { get = _strValues; private set { if (_strValues != value) { _strValues = value; OnPropertyChangedWithValue(value, "StrValues"); } } } [DataSourceProperty] public bool IsVisible { get = _isVisible; set { if (_isVisible != value) { _isVisible = value; OnPropertyChangedWithValue(value, "IsVisible"); } } } // GUI に表示するデータの更新はこのメソッドで行います。 // ただし、ここに記述すればあとは勝手に更新されていくというものではないので、 // 自分が必要な場所では自分で呼び出さなければなりません。 public override void RefreshValues() { base.RefreshValues(); // 元々ローカル変数だったものを、View から参照できるようにプロパティに昇格しました。 CurrentValue = (int)Math.Ceiling(_opponent?.Health ?? 0f); MaxValue = (int)Math.Ceiling(_opponent?.HealthLimit ?? 0f); StrValues = string.Format(ValueFormat, CurrentValue, MaxValue); IsVisible = _opponent != null; } public void OnFocusChanged(IFocusable focusableObject) { // 適切な相手に表示されるよう条件を追加しました。 if (focusableObject is Agent possibleOpponent possibleOpponent.IsHuman possibleOpponent.IsEnemyOf(Agent.Main)) { _opponent = (_opponent == null || _opponent != possibleOpponent) ? possibleOpponent null; RefreshValues(); } } public void OnAgentHit(Agent affectedAgent) { if (_opponent == affectedAgent) { RefreshValues(); } } public void OnAgentRemoved(Agent removedAgent) { if (_opponent == removedAgent) { // 先にフォーカスロストが発生してここには入らないかも。 OnFocusChanged(removedAgent); } } }} OpponentHealthBar.xml Prefab Window FillBarWidget WidthSizePolicy="Fixed" HeightSizePolicy="Fixed" SuggestedWidth="430" SuggestedHeight="50" HorizontalAlignment="Center" VerticalAlignment="Top" MarginTop="250" ContainerWidget="FillBarContainer" FillWidget="FillVisualParent\FillVisual" MaxAmount="@MaxValue" InitialAmount="@CurrentValue" IsVisible="@IsVisible" Children Widget Id="FillVisualParent" WidthSizePolicy="Fixed" HeightSizePolicy="StretchToParent" SuggestedWidth="400" HorizontalAlignment="Center" VerticalAlignment="Center" MarginTop="10" MarginBottom="10" Sprite="BlankWhiteSquare" Color="#202020A0" Children BrushWidget Id="FillVisual" WidthSizePolicy="Fixed" HeightSizePolicy="StretchToParent" SuggestedWidth="400" HorizontalAlignment="Left" Brush="Mission.MainAgentHUD.HeroHealthBar.Fill" / /Children /Widget Widget Id="FillBarContainer" WidthSizePolicy="StretchToParent" HeightSizePolicy="StretchToParent" Sprite="options_memory_progress_frame" / TextWidget Text="@StrValues" WidthSizePolicy="CoverChildren" HeightSizePolicy="CoverChildren" HorizontalAlignment="Center" VerticalAlignment="Center" PositionYOffset="3" Brush="Tooltip.Text" Brush.FontSize="24" / /Children /FillBarWidget /Window /Prefab 名前
https://w.atwiki.jp/hs0nn/pages/33.html
仮?運用中です。(´・ω・`)導入しないと入れません。 内容に関しての質問は以下のチャットにて受付ます。 和風建築鯖-harka鯖-会議場 WEB支店 ※パスワードはマインクラフト内、もしくはスカイプ会議室で聞いて下さい(´・ω・`) 導入必須MOD一覧 1. MinecraftForge リンク:minecraftforge Downloads 2. 竹MOD リンク:Minecraft非公式日本ユーザーフォーラム サーバのバージョン:竹mod ver2.6.0.2Universal(minecraft1.4.7) ※ 1.4.7版レシピ:マインクラフトwiki(バックアップ) 3. モミジMOD リンク:Minecraft非公式日本ユーザーフォーラム サーバのバージョン:[1.4.6]MapleTree Forge v1.1.9 ※通常版を入れないで下さい。下の説明にどのファイルをDLするのか書いてあります。 落としたファイルをもう一度よく見て。そのファイル名にForgeって文字が入ってますか? ※導入推奨MOD一覧 4. NihongoMOD リンク:Minecraft非公式日本ユーザーフォーラム ※竹MOD・モミジMODと同じようにmodsフォルダに置くだけで日本語が打てるようになります。 ModLoaderとIMを使ってたけどForgeにしてIM消えた!って人向け。 導入する前に ファイルをダウンロードする前に、自分の利用状況を確認してください。 A. Minecraft.jarに全く手を付けた事がなく、modsフォルダも空 B. Forgeは入れた事が無いけど、MODLoaderが入っている。 (minefraft.jarの中にファイルを導入した事がある) C. Forgeが入っている。もしくは入れた事がある。 → Aの人 …この後の1から3までを全て対応して下さい。 → Bの人 …minecraft.jarからmodloaderを消す必要がります。 今のminecraft.jarを「minecraft_old.jar」等にリネームして、 再度マインクラフトを起動しバニラなminecraft.jarを取得して下さい。 もしバックアップを取得しているのであれば、それに差し替えて下さい。 ※Forgeの中にmodloaderと同様の機能があり、既存MODもほぼ対応しています。 もし動かなかった場合は、それぞれのMODページからForge対応版をDLして下さい。 無かった場合は…諦めて下さい(´・ω・`) → Cの人 …最新でなければ最新のForgeを再度導入し、竹MODおよびモミジMODをダウンロードして modsフォルダに置いて下さい。 ※利用バージョンは上記「導入必須MOD一覧」参照 ★重要★ まず最初に、必ずバックアップを取得して下さい。 ※.minecraftフォルダの中にbinフォルダがあり、その中にある「minecraft.jar」と言うファイルです。 「minecraft_1.4.X.jar」等のそれぞれのバージョンでわかりやすく管理すると便利です。 注意 「.jar」って付いてるファイルがない!って人は拡張子が非表示の設定になってるだけです。 binフォルダ内にある「minecraft」と言うファイルが該当します。 また、導入順序として、バニラの状態からだと Forge→optifine等の軽量化MOD→メタ(META-INF)削除→その他MOD となります。 もしoptifineが既に導入されているが、Forgeが入っていない、と言う場合は、 Forge導入後、再度optifine→その他MODと上書きして下さい。 導入方法 1. MinecraftForge ① minecraftforge Downloadsより、MinecraftFrogeをダウンロードします。 ※リンク先は転送ページなので、数秒すると右上に下記ボタンが表示されるのでクリック ② 日本語MOD導入ページの①から⑤までを行います。 ③ 先ほどダウンロードしたForgeを同様に解凍し、minefraft.jarの中に入れます。 ※日本語MOD導入ページの⑥・⑦のやり方です。 ④ minefraft.jarの中にあるMETA-INFフォルダを削除します。 ※日本語MOD導入ページの⑧のやり方です。 ⑤ 全て終わったら、一度マインクラフトを起動して下さい。 FMLのバージョンチェックやらが走りますが、眺めておきましょう。 何もしなくてOKです。 導入が成功すると下記のように表示されます。 これでForgeの導入は完了です。 ※optifine等、軽量化MODを利用する際には、必ずForgeを導入してから入れて下さい。 2. 竹MOD ① Minecraft非公式日本ユーザーフォーラムより、竹MODをダウンロードします。 ※なお、必ずしも最新版とは限らない場合があります。 上記「導入必須MOD一覧」に書かれている、サーバと同一のバージョンを利用して下さい。 ② .minefraftフォルダ(日本語MOD導入ページの②)の中にあるmodsフォルダを開き、 その中に先ほどダウンロードした竹MODを「zipファイルのまま」置いて下さい。 zipファイルは解凍しないで下さい。また、jarファイルに直接入れる必要もありません。 ※もしmodsフォルダが無い!と言う場合は、自分で「mods」というフォルダを作って下さい。 これで竹MODの導入は完了です。 3. モミジMOD ① Minecraft非公式日本ユーザーフォーラムより、モミジMODをダウンロードします。 Forge版が必要なので、上部のダウンロードリストじゃありません。 下部にある「◆MinecraftForge universal版[マルチ対応]」を選択します。 表示選択後、展開された中にあるモミジMOD(universal版)をダウンロードします。 ※なお、必ずしも最新版とは限らない場合があります。 上記「導入必須MOD一覧」に書かれている、サーバと同一のバージョンを利用して下さい。 ② .minefraftフォルダ(日本語MOD導入ページの②)の中にあるmodsフォルダを開き、 その中に先ほどダウンロードした竹MODを「zipファイルのまま」置いて下さい。 zipファイルは解凍しないで下さい。また、jarファイルに直接入れる必要もありません。 ※modsフォルダ中には竹MODのzipとモミジMODのzip、二つが入ってればおっけーです。 これでモミジMODの導入は完了です。 動作確認 サーバへログイン出来れば成功です。 ①導入したバージョンが違う場合 上記のように、サーバのMODのバージョンが表示されます。 正しいMODをダウンロードして、modsフォルダに置いて下さい。 ②MODが置かれていない場合 MOD自体が読み込めないため、エラーを吐き出します。 ※フォントの関係上もあり、全て表示されていませんが… こうなったらmodsフォルダにMODが置かれていない、またはダウンロードしたファイルが 壊れている可能性があります。 再度ダウンロードしてmodsフォルダに設置して下さい。 以上で必須MODの導入は完了です。 上手くいきましたか? これでも駄目な場合、上部のweb会議室で質問して貰えれば頑張って答えます(´・ω・`) それでは、よいマインクラフトライフを! 今日: - 昨日: - 合計: -
https://w.atwiki.jp/mootchiiy/pages/65.html
このページでは、Super Smash Flash 2(SSF2) Sandboxで動作するModを列挙する。これらのModは、ダウンロードリンクが公開されており、なおかつ実際に動作した物のみ。各作者のDiscordなどに入ることでより多くのModをダウンロードできることもあるが、それは各自で調べてほしい。 Modの簡単導入 まず、Sandboxをダウンロードすること。 次に、Sandboxを展開したフォルダのbuild/data/character/に、次の表を見てダウンロードしたssfファイルを入れる。多くの場合、ファイル名は『DAT52.ssf』などとなっているが、キャラクターの判別のために分かりやすいファイル名へ変更しておくこと。 最後にbuild/res/Mappings.jsonを開き、myCharactersという項目に先ほどのファイル名(拡張子ssfは除く)を並べる。入力の仕方はデフォルトで例が入っているため、それを参考にしてほしい。なお一列に並べられるのは13キャラクターのみなので、いっぱいになったら下の行へ移動すること。 Mod一覧 作品名、キャラ名のあいうえお順で並べている。 作品名 キャラ名 ダウンロードリンク 注意点 メモ Among Us クルーメイト(Crewmate) https //www.mediafire.com/file/b69zr3i1yegpoiv/SSF2_0.9b_Mods_-_Crewmate.zip/file 実のところインポスター。 Angry Birds Red Bird https //www.mediafire.com/file/al5r7ztv6wnczj6/RED+FIXED.rar/file ボンバーマンのグラフィック置き換え。 Deltarune ジェビル(Jevil) https //drive.google.com/drive/folders/19CELEbW8WJDn954mA-Ls5AMWtT42ae5J Deltarune ラルセイ(Ralsei) https //drive.google.com/drive/folders/19CELEbW8WJDn954mA-Ls5AMWtT42ae5J 必殺技をはじめとする各種技がない。 Deltarune スパムトン(Spamton) https //drive.google.com/drive/folders/19CELEbW8WJDn954mA-Ls5AMWtT42ae5J Friday Night Funkin' Boyfriend+Girlfriend https //www.mediafire.com/file/vvk1jnspckozhk3/SSF2_Mod_Boyfriend.rar/file NARUTO うちはイタチ https //drive.google.com/drive/folders/19CELEbW8WJDn954mA-Ls5AMWtT42ae5J 復帰がかなり強い。 NARUTO はたけカカシ https //drive.google.com/drive/folders/19CELEbW8WJDn954mA-Ls5AMWtT42ae5J Undertale ウザいイヌ(Annoying Dog) https //drive.google.com/drive/folders/19CELEbW8WJDn954mA-Ls5AMWtT42ae5J Undertale サンズ(Sans) https //videogamemods.com/supersmashflash2/mods/sans-but-its-a-joke-mod/ ぶっ壊れ。上下左右の攻撃で重力操作が撃てるが、ステージ上すべての敵に攻撃する。CPであれば、0%の時点から10秒弱で上に吹き飛ばすことすら可能。 VOCALOID 初音ミク https //www.mediafire.com/file/n75so24jwqa8aq6/DAT15%2528mod_de_hatsune_miku%2529.rar/file ゼルダのグラフィック置き換え。 犬夜叉 犬夜叉 https //videogamemods.com/supersmashflash2/mods/inuyasha-revamped/ イチゴのグラフィック置き換え。 エル・チャボ・デル・オチョ El Chavo https //gamebanana.com/mods/452845 鬼滅の刃 竈門炭次郎 https //sites.google.com/view/chimueladasepicasalaborger/mods ロイドのグラフィック置き換え。 銀魂 坂田銀時 https //www.mediafire.com/file/4bb4a9qdktxk56m/SSF2_Sakata_Gintoki.zip/file ぶっ壊れ気味。 パーセントが一定数(おそらく80%)を越えると技が一式切り替わる。正直普通の時の方が強い。 進撃の巨人 エレン・イェーガー https //www.mediafire.com/file/67zs2fgwet7e70l/Eren_Jaeger.rar/file フォックスのグラフィック置き換え。 呪術廻戦 伏黒恵 https //www.mediafire.com/file/d111rsmeqr3f80c/Megumi_Fushiguro.zip/file 必殺技がない。また、大幅にラグくなる。 呪術廻戦 釘崎野薔薇 https //www.mediafire.com/file/54z4g477x6iucw2/Nobara.rar/file 大幅にラグくなる。 呪術廻戦 虎杖雄仁 https //www.mediafire.com/file/n66um7bk61fxsnr/Yuji_Itadori.zip/file かなりぶっ壊れ。大幅にラグくなる。 ジョジョの奇妙な冒険 東方仗助(クレイジーダイヤモンド)+浩一(エコーズACT2)+億康(ザ・ハンド)+露伴(ヘブンズドアー)+承太郎(スタープラチナ・ザ・ワールド) https //drive.google.com/drive/folders/19CELEbW8WJDn954mA-Ls5AMWtT42ae5J ザ・ハンドが非常に強力なため下からの復帰ならかなりやりやすい。瞬間移動という仕様上、終点の真下からザ・ハンドを使うと床を貫通して上に戻ってくることができる。 ジョジョの奇妙な冒険 吉良吉影(キラークイーン) https //drive.google.com/drive/folders/19CELEbW8WJDn954mA-Ls5AMWtT42ae5J ジョジョの奇妙な冒険 花京院典明(ハイエロファントグリーン) https //www.mediafire.com/file/z5c1tdu9d13a3qo/Kakyoin_SSF2.zip/file 復帰技が独特でかなり上級者向け。 ゼルダの伝説 こどもリンク https //gamebanana.com/mods/385449 下必殺の爆弾設置をすると爆弾が消えないため、非常にラグくなる。 ソードアートオンライン キリト https //www.mediafire.com/file/204e5ai6u3vxb40/Kirito+SSF2.rar/file ほぼソラのグラフィック置き換え。 ソニック・ザ・ヘッジホッグ サニック(Sanic) https //drive.google.com/drive/folders/19CELEbW8WJDn954mA-Ls5AMWtT42ae5J グラフィックがないため、技がちゃんと使えているかとても分かりづらい。 チェンソーマン デンジ+マキマ+パワー+アキ+サメの魔人 https //www.mediafire.com/file/sv33blqq7ahyhod/Denji_%257B_DAT66_%257D.ssf/file 上必殺でかなりの距離を飛べるため、復帰がすごく強い。終点くぐりもできなくもなさそう。 月姫 ネコアルク https //drive.google.com/drive/folders/19CELEbW8WJDn954mA-Ls5AMWtT42ae5J フォックスのグラフィック置き換え。 鋼の錬金術師 エドワード・エルリック+アルフォンス・エルリック+ロイ・マスタング https //videogamemods.com/supersmashflash2/mods/edward-elric/ 鋼の錬金術師 ロイ・マスタング https //sites.google.com/view/chimueladasepicasalaborger/mods キャプテンファルコンのグラフィック置き換え。 ハンターハンター キルア https //www.mediafire.com/file/63a49l8jc1d84dh/Killua+HxH+stage_SSF2.zip 復帰技が独特。また空中で通常必殺を撃ち続けるとホバリングができる。 光神話・パルテナの鏡 パルテナ https //gamebanana.com/mods/366731 ファイヤーエムブレム Roy https //gamebanana.com/mods/365698 Marthのグラフィック違い? ダウンロードリンクにはMeleeとUltimateの二種類が用意されているが、著者は違いがよく分からない。 ペルソナ ジョーカー https //videogamemods.com/supersmashflash2/mods/joker-v2/ スマッシュブラザーズとは違い、ダメージを受けても強化されない。下必殺が反撃になっている。 僕のヒーローアカデミア 爆轟勝己 https //sites.google.com/view/chimueladasepicasalaborger/mods ゼルダのグラフィック置き換え。 ポケットモンスター エースバーン(Cinderace) https //gamebanana.com/mods/453349 メタルギアソリッド 雷電 https //sites.google.com/view/chimueladasepicasalaborger/mods ほぼロイドのグラフィック置き換え。 妖怪ウォッチ ジバニャン+ウィスパー https //www.mediafire.com/file/cito9onq9i0zqb5/Jibanyan+(FIXED).rar/file ほぼソラのグラフィック置き換え。 ワンパンマン サイタマ https //drive.google.com/drive/folders/19CELEbW8WJDn954mA-Ls5AMWtT42ae5J ぶっ壊れ。頭突きが非常に強く、0%でも即死可能。無限ジャンプもできる。
https://w.atwiki.jp/wot_tif/pages/22.html
MODは好きな様に入れてもいいのですが、公式が禁止しているMODがあります なお、ここに書いてあるMODを入れてる場合。BANされる可能性があります 1.レーザーサイトMOD 砲口から伸びる赤い線を表示し、どこを照準しているか一目瞭然になるため 2.フリーカメラMOD ※フリーカメラ≠ズームアウトMOD 自走砲でスナイパーモードにできたり、視点を自由に移動できるなど、ゲーム性が破綻するため こんなのやこんなの(YouTubeへリンクします) クソゲーである 3.モジュール当たり判定を3Dモデルで可視化するMOD 乗務員や弾薬庫などの当たり判定を表示させるため ・例 4.木の葉や茂みを消すMOD このムロバンカを見てくれ、こいつはどう思う すごく・・スッキリしてます・・ マジカルフォレストなんてなかった!! 5.ズームアウトMOD 自走砲視点でカメラを引ける範囲を拡張するMOD。(通常視点はセーフ) カウンターがやりやすくなるね、やったねt 6.トレーサーMOD 自走砲視点で、見えない敵の履帯跡を表示させるMODのこと
https://w.atwiki.jp/civilization/pages/279.html
MOD/Tan Interface スクリーンショット1 2 3 4 Site Download インターフェイスの色をCiv3風の落ち着いた褐色に変えます。 詳しくはスクリーンショットを参照してください。 インストール方法 Civ4のディレクトリ/Resource/Themes/Civ4/Civ4Theme_Common.thmをリネームする MODをダウンロード 上記ディレクトリにコピーCiv4Theme_Common.thmをコピー